package ink.lovejinhu.leetcode;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

/**
 * @author jinhu
 * created 2021-07-06 16:04
 */
public class Solution_0202 {
    /**
     * 快乐数
     * 对于一个正整数，每一次将该数替换为它每个位置上的数字的平方和。
     * 然后重复这个过程直到这个数变为 1，也可能是 无限循环 但始终变不到 1。
     * 如果 可以变为  1，那么这个数就是快乐数
     * <p>
     * 输入：19
     * 输出：true
     * 解释：
     * 12 + 92 = 82
     * 82 + 22 = 68
     * 62 + 82 = 100
     * 12 + 02 + 02 = 1
     * <p>
     * A^2+B^2+C^2.....=10^n
     *
     * @param n
     * @return
     */
    public boolean isHappy(int n) {

        HashSet<Integer> integers = new HashSet<>();
        while (true) {
            List<Integer> everyNum = this.getEveryNum(n);
            int result = 0;
            for (int i = 0; i < everyNum.size(); i++) {
                result = result + everyNum.get(i) * everyNum.get(i);
            }
            n = result;
            if (n == 1) {
                return true;
            }
            if (integers.contains(n)) {
                return false;
            }
            integers.add(n);
        }
    }

    public List<Integer> getEveryNum(int n) {

        ArrayList<Integer> integers = new ArrayList<>();
        while (n / 10 > 0 || n % 10 > 0) {
            integers.add(n % 10);
            n /= 10;
        }
        return integers;

    }
}
